package com.ningxun.pagentcrawler.controller.config;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.ningxun.pagent.common.core.controller.BaseController;
import com.ningxun.pagent.common.core.domain.AjaxResult;
import com.ningxun.pagent.common.core.page.TableDataInfo;
import com.ningxun.pagentcrawler.entity.CrawlerConfig;
import com.ningxun.pagentcrawler.entity.config.CrawlerConfigEntity;
import com.ningxun.pagentcrawler.service.config.ICrawlerConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 爬虫配置管理Controller
 * 
 * @author pagent
 * @date 2025-01-XX
 */
@RestController
@RequestMapping("/system/crawler/config")
public class CrawlerConfigController extends BaseController {

    @Autowired
    private ICrawlerConfigService crawlerConfigService;

    /**
     * 查询爬虫配置列表
     */
    @GetMapping("/list")
    public TableDataInfo list(CrawlerConfig config ,
                              @RequestParam(defaultValue = "1") Integer pageNum,
                              @RequestParam(defaultValue = "10") Integer pageSize) {
//        startPage(pageNum,pageSize);
        PageHelper.startPage(pageNum, pageSize);
        List<CrawlerConfigEntity> list = crawlerConfigService.getAllConfigs(config);

//        // 应用搜索过滤
//        if (config != null) {
//            list = list.stream()
//                .filter(item -> {
//                    // 配置名称搜索
//                    if (config.getConfigName() != null && !config.getConfigName().isEmpty()) {
//                        if (!item.getConfigName().toLowerCase().contains(config.getConfigName().toLowerCase())) {
//                            return false;
//                        }
//                    }
//
//                    // 网站名称搜索
//                    if (config.getSiteName() != null && !config.getSiteName().isEmpty()) {
//                        if (!item.getSiteName().toLowerCase().contains(config.getSiteName().toLowerCase())) {
//                            return false;
//                        }
//                    }
//
//                    // 状态搜索
//                    if (config.getEnabled() != null) {
//                        if (!config.getEnabled().equals(item.getEnabled())) {
//                            return false;
//                        }
//                    }
//
//                    return true;
//                })
//                .collect(java.util.stream.Collectors.toList());
//        }

//        PageInfo<CrawlerConfigEntity> pageInfo = new PageInfo<>(list);

        // 5. 返回若依标准分页格式
        return getDataTable(list);
    }

    /**
     * 获取爬虫配置详细信息
     */
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") String id) {
        return success(crawlerConfigService.getConfigById(id));
    }

    /**
     * 新增爬虫配置
     */
    @PostMapping
    public AjaxResult add(@RequestBody CrawlerConfig config) {
        crawlerConfigService.saveConfig(config);
        return success();
    }

    /**
     * 修改爬虫配置
     */
    @PutMapping
    public AjaxResult edit(@RequestBody CrawlerConfig config) {
        crawlerConfigService.saveConfig(config);
        return success();
    }

    /**
     * 删除爬虫配置
     */
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable String[] ids) {
        for (String id : ids) {
            crawlerConfigService.deleteConfig(id);
        }
        return success();
    }

    /**
     * 测试爬虫配置
     */
    @PostMapping("/test")
    public AjaxResult test(@RequestBody CrawlerConfig config) {
        boolean isValid = crawlerConfigService.testConfig(config);
        return isValid ? success("配置测试通过") : error("配置测试失败");
    }





    
}